/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package rn;

import controladores.CategoriaJpaController;
import controladores.ChoferJpaController;
import controladores.ConfiguracionEjesJpaController;
import controladores.EstadoVehiculoJpaController;
import controladores.MarcaJpaController;
import controladores.ModeloJpaController;
import controladores.ObraJpaController;
import controladores.PropietarioJpaController;
import controladores.VehiculoJpaController;
import controladores.exceptions.NonexistentEntityException;
import entidades.Categoria;
import entidades.Chofer;
import entidades.ConfiguracionEjes;
import entidades.EstadoVehiculo;
import entidades.Marca;
import entidades.Modelo;
import entidades.Obra;
import entidades.Propietario;
import entidades.Vehiculo;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Pablo
 */
public class VehiculoRN {

    private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("Hormicat-SistemaIntegralPU");
    private static VehiculoJpaController vehiculoJpaController = new VehiculoJpaController(factory);
    private static CategoriaJpaController categoriaJpaController = new CategoriaJpaController(factory);
    private static MarcaJpaController marcaJpaController = new MarcaJpaController(factory);
    private static ModeloJpaController modeloJpaController = new ModeloJpaController(factory);
    private static ObraJpaController obraJpaController = new ObraJpaController(factory);
    private static PropietarioJpaController propietarioJpaController = new PropietarioJpaController(factory);
    private static ChoferJpaController choferJpaController = new ChoferJpaController(factory);
    private static EstadoVehiculoJpaController estadoVehiculoJpaController = new EstadoVehiculoJpaController(factory);
    private static ConfiguracionEjesJpaController configuracionEjesJpaController = new ConfiguracionEjesJpaController(factory);

    public VehiculoRN() {
    }

    //Vehiculo
    public static void create(Vehiculo vehiculo) {
        vehiculoJpaController.create(vehiculo);
    }

    public static void edit(Vehiculo vehiculo) {
        try {
            vehiculoJpaController.edit(vehiculo);
        } catch (Exception ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void eliminar(Long id) {
        try {
            vehiculoJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static List<Vehiculo> getTodosVechiculos() {
        return vehiculoJpaController.findVehiculoEntities();
    }

    public static List<Vehiculo> getVehiculosPor(String value, String parametro) {
        return vehiculoJpaController.getVehiculosPor(value, parametro);
    }

    public static Vehiculo findVehiculoPorID(Long id) {
        return vehiculoJpaController.findVehiculo(id);
    }

    public static List<Vehiculo> getVehiculosLikeDescripcion(String str) {
        return vehiculoJpaController.getVehiculosLikeDescripcion(str);
    }

    public static List<Vehiculo> getVehiculosLikeNroUnidad(String str) {
        return vehiculoJpaController.getVehiculosLikeNroUnidad(str);
    }

    public static boolean yaExiste(String value, int parametro, Long id_excepcion) {
        return vehiculoJpaController.yaExiste(value, parametro, id_excepcion);
    }

    public static List<Vehiculo> getVehiculosLike(String value, int parametro) {
        return vehiculoJpaController.getVehiculosLike(value, parametro);
    }

    //Marca
    public static void create(Marca vehiculo) {
        marcaJpaController.create(vehiculo);
    }

    public static void edit(Marca vehiculo) {
        try {
            marcaJpaController.edit(vehiculo);
        } catch (Exception ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static List<Marca> getTodosMarca() {
        return marcaJpaController.findMarcaEntities();
    }

    public static Marca findMarcaPorID(Long id) {
        return marcaJpaController.findMarca(id);
    }

    public static boolean yaExisteMarca(String value, Long id_excepcion) {
        return marcaJpaController.yaExiste(value, id_excepcion);
    }

    public static void eliminarMarca(Long id) {
        try {
            marcaJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //Modelo
    public static void create(Modelo modelo) {
        modeloJpaController.create(modelo);
    }

    public static void edit(Modelo modelo) {
        try {
            modeloJpaController.edit(modelo);
        } catch (Exception ex) {

        }
    }

    public static List<Modelo> getTodosModelo() {
        return modeloJpaController.findModeloEntities();
    }

    public static Modelo findModeloPorID(Long id) {
        return modeloJpaController.findModelo(id);
    }

    public static List<Modelo> getModelosPorMarca(Long id) {
        return modeloJpaController.getModelosPorMarca(id);
    }

    public static void eliminarModelo(Long id) {
        try {
            modeloJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static boolean yaExisteModelo(String value, Long id_excepcion) {
        return modeloJpaController.yaExiste(value, id_excepcion);
    }

    //Categoria
    public static void create(Categoria categoria) {
        categoriaJpaController.create(categoria);
    }

    public static void edit(Categoria categoria) {
        try {
            categoriaJpaController.edit(categoria);
        } catch (Exception ex) {

        }
    }

    public static List<Categoria> getTodosCategoria() {
        return categoriaJpaController.findCategoriaEntities();
    }

    public static Categoria findCategoriaPorID(Long id) {
        return categoriaJpaController.findCategoria(id);
    }

    public static void eliminarCategoria(Long id) {
        try {
            categoriaJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //Obra
    public static void create(Obra obra) {
        obraJpaController.create(obra);
    }

    public static void edit(Obra obra) {
        try {
            obraJpaController.edit(obra);
        } catch (Exception ex) {

        }
    }

    public static List<Obra> getTodosObra() {
        return obraJpaController.findObraEntities();
    }

    public static Obra findObraPorID(Long id) {
        return obraJpaController.findObra(id);
    }

    public static void eliminarObra(Long id) {
        try {
            obraJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //Propietario
    public static void create(Propietario propietario) {
        propietarioJpaController.create(propietario);
    }

    public static void edit(Propietario propietario) {
        try {
            propietarioJpaController.edit(propietario);
        } catch (Exception ex) {

        }
    }

    public static List<Propietario> getTodosPropietario() {
        return propietarioJpaController.findPropietarioEntities();
    }

    public static Propietario findPropietarioPorID(Long id) {
        return propietarioJpaController.findPropietario(id);
    }

    public static void eliminarPropietario(Long id) {
        try {
            propietarioJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //Chofer
    public static void create(Chofer chofer) {
        choferJpaController.create(chofer);
    }

    public static void edit(Chofer chofer) {
        try {
            choferJpaController.edit(chofer);
        } catch (Exception ex) {

        }
    }

    public static List<Chofer> getTodosChofer() {
        return choferJpaController.findChoferEntities();
    }

    public static Chofer findChoferPorID(Long id) {
        return choferJpaController.findChofer(id);
    }

    public static void eliminarChofer(Long id) {
        try {
            choferJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static boolean yaExisteCategoria(String value, Long id_excepcion) {
        return categoriaJpaController.yaExiste(value, id_excepcion);
    }

    public static boolean yaExistePropietario(String value, Long id_excepcion) {
        return propietarioJpaController.yaExiste(value, id_excepcion);
    }

    public static boolean yaExisteChofer(String apellido, String nombre, Long id_excepcion) {
        return choferJpaController.yaExiste(apellido, nombre, id_excepcion);
    }

    public static boolean yaExisteObra(String apellido, String nombre, Long id_excepcion) {
        return obraJpaController.yaExiste(apellido, nombre, id_excepcion);
    }

    //Estado Vehiculo
    public static void create(EstadoVehiculo estadoVehiculo) {
        estadoVehiculoJpaController.create(estadoVehiculo);
    }

    public static void edit(EstadoVehiculo estadoVehiculo) {
        try {
            estadoVehiculoJpaController.edit(estadoVehiculo);
        } catch (Exception ex) {

        }
    }

    public static List<EstadoVehiculo> getTodosEstadoVehiculo() {
        return estadoVehiculoJpaController.findEstadoVehiculoEntities();
    }

    public static EstadoVehiculo findEstadoVehiculoPorID(Long id) {
        return estadoVehiculoJpaController.findEstadoVehiculo(id);
    }

    public static void eliminarEstadoVehiculo(Long id) {
        try {
            estadoVehiculoJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static boolean yaExisteEstadoVehiculo(String value, Long id_excepcion) {
        return estadoVehiculoJpaController.yaExiste(value, id_excepcion);
    }
    
    //Configuraciones Ejes
    public static List<ConfiguracionEjes> getTodosConfiguracionesEjes() {
        return configuracionEjesJpaController.findConfiguracionEjesEntities();
    }
    
    public static ConfiguracionEjes getConfiguracionEje(Long id){
        return configuracionEjesJpaController.findConfiguracionEjes(id);
    } 

}
